/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package colloque.forms;


import colloque.Evalue;
import colloque.Expose;
import colloque.HibernateUtil;
import colloque.Utilisateur;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author James
 */
public class EvaluerDepotForm {


    private String              resultat;
    private Map<String, String> erreurs      = new HashMap<String, String>();
    Session session = null;

    /**
     *
     */
    public EvaluerDepotForm() {
        this.session = HibernateUtil.getSessionFactory().getCurrentSession();
    }

    /**
     *
     * @return
     */
    public String getResultat() {
        return resultat;
    }

    /**
     *
     * @return
     */
    public Map<String, String> getErreurs() {
        return erreurs;
    }

    /**
     * Mets à jour un Exposé
     * @param request
     */
    public void updateExposeEtat(HttpServletRequest request) {
        /* Récupération des champs du formulaire */
        Utilisateur utilisateur_session = (Utilisateur) request.getSession().getAttribute("sessionUtilisateur");
        Integer id = Integer.parseInt(request.getParameter("expose_id"));
        Integer etat;
        // session.beginTransaction();
        try {
            Transaction tr = session.beginTransaction();
            Expose expose = (Expose) session.get(Expose.class, id);
            etat = expose.getExposeetat() + 1;
            expose.setExposeetat(etat);
            session.update(expose);
            
            Utilisateur utilisateur = (Utilisateur) session.get(Utilisateur.class, utilisateur_session.getUtilisateurid());
            
            Evalue evalue = new Evalue();
            evalue.setUtilisateur(utilisateur);
            evalue.setExpose(expose);
            evalue.setEvalpertinence(Integer.parseInt(request.getParameter("Pertinence")));
            evalue.setEvalimportance(Integer.parseInt(request.getParameter("Importance")));
            evalue.setEvallisibilite(Integer.parseInt(request.getParameter("Lisibilite")));
            evalue.setEvalfinale(Integer.parseInt(request.getParameter("DecisionFinale")));
            session.save(evalue);
            
            tr.commit();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * Mets à jour l'évaluation d'un exposé
     * @param request
     */
    public void updateEvaluation(HttpServletRequest request) {
        /* Récupération des champs du formulaire */
        Integer id = Integer.parseInt(request.getParameter("evaluation_id"));

        try {
            Transaction tr = session.beginTransaction();
            Evalue evaluation = (Evalue) session.get(Evalue.class, id);
            evaluation.setEvalpertinence(Integer.parseInt(request.getParameter("Pertinence")));
            evaluation.setEvalimportance(Integer.parseInt(request.getParameter("Importance")));
            evaluation.setEvallisibilite(Integer.parseInt(request.getParameter("Lisibilite")));
            evaluation.setEvalfinale(Integer.parseInt(request.getParameter("DecisionFinale")));
            session.update(evaluation);
            tr.commit();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Valide l'adresse email saisie.
     */
    private void validationEmail( String email ) throws Exception {
        if ( email != null && !email.matches( "([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+)" ) ) {
            throw new Exception( "Merci de saisir une adresse mail valide." );
        }
    }

    /**
     * Valide le mot de passe saisi.
     */
    private void validationMotDePasse( String motDePasse ) throws Exception {
        if ( motDePasse != null ) {
            if ( motDePasse.length() < 3 ) {
                throw new Exception( "Le mot de passe doit contenir au moins 3 caractères." );
            }
        } else {
            throw new Exception( "Merci de saisir votre mot de passe." );
        }
    }

    /*
     * Ajoute un message correspondant au champ spécifié à la map des erreurs.
     */
    private void setErreur( String champ, String message ) {
        erreurs.put( champ, message );
    }

    /*
     * Méthode utilitaire qui retourne null si un champ est vide, et son contenu
     * sinon.
     */
    private static String getValeurChamp( HttpServletRequest request, String nomChamp ) {
        String valeur = request.getParameter( nomChamp );
        if ( valeur == null || valeur.trim().length() == 0 ) {
            return null;
        } else {
            return valeur;
        }
    }
}

